Mauro Silberberg
PhD Student in Physics
Universidad de Buenos Aires, Argentina
Currently doing an internship at EBI-EBML, UK
Tutorial’s GitHub repo
https://bit.ly/simbio-combine2023
A Python library to
define and simulate
dynamical systems.
Built on top of poincaré, adding functionality to:
AMICI, Brian 2, CBMPy, COBRApy, COPASI, E-Cell 4, GillesPy2, GINsim, KaSim, Lattice Microbes, LibSBMLSim, MaBoSS, MASSpy, NetPyNe, NEURON, OpenCOR, pyNeuroML, PySB, PySceS, RBApy, Simmune, SimVascular, Smoldyn, tellurium, XP, …
And these are the ones listed in BioSimulators.org!
Integrated with IDEs:
What do we mean by this?
Wrappers to libraries in other languages (C, C++)
But not extendable from Python.
PyData ecosystem just used after the simulation is done.
Example:
Random Parameter Scans in COPASI
uniform, normal, poisson or gammascipy.stats?The main selling point of Python is it huge ecosystem.
Interexchange standards:
to (re)use with different tools.
Approaches to create them:
Simple reaction with first-order mass-action kinetics:
With strings, IDE cannot provide:
Programming without them is like
…parking without power steering?
By Steve Ma et. al from the University of Washington
Language Server Protocol (LSP)
\(\rightarrow\) now easier to add support for a language.
But a maintenance burden for small community?
Must adapt to changes in: Antimony, LSP, VSCode
Using standard Python to reuse tooling from the community:
linter \(\rightarrow\) ruff ⚡️
formatter \(\rightarrow\) black (PSF project)
type-checker \(\rightarrow\) mypy, pyright (Microsoft)
LSP \(\rightarrow\) multiple editors
Widely used tools \(\rightarrow\) highly tested and will be maintained
Simple reaction with first-order mass-action kinetics:
Add SED-ML import/export
Add SBML export
Add volume to Compartment (needed for units in simbio).
New integrators (stochastic integrators)
New simulations (parameter sweeps)
Events
Created two modular Python packages:
Modularity
can be used* by a broader community
*debugged, improved, maintained
Being in Python
use tooling* and libraries from the (huge) Python community
*linter, formatters, static analyzers, editor integration, etc.